package mybatis.hr.main;

import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import mybatis.hr.dao.DepartmentDAO;
import mybatis.hr.domain.Department;

public class DepartmentTest {
	public static void main(String[] args) {
		DepartmentDAO dao = DepartmentDAO.getInstance();
		
//		Department dept1 = new Department(100, "기획부", "서울");
//		int cnt = dao.insertDepartment(dept1);
//		System.out.println("insert 개수 : "+cnt);
//		Department dep1 = new Department(151, "여가부", "판교");
//		dao.insertDepartment(dep1);
//		Department dep2 = new Department(112, "이지수", "성교");
//		dao.insertDepartment(dep2);
//		Department dep3 = new Department(113, "한지수", "매교");
//		dao.insertDepartment(dep3);
//		Department dep4 = new Department(114, "강지수", "당교");
//		dao.insertDepartment(dep4);
//		
		
		
		/*
		 * 아래에 얘를 기억해야 한다.
		 * 생각해봐라, 디파트먼트 객체를 만들어서 서버로 전송하는데 null값이 들어간다면 어떻할까?
		 * 그냥 null값을 전송하려고 하면 에러가 난다.
		 * 그래서 이 null에 대한 타입을 지정해야 한다.
		 * 마리아 디비에서는 기본적으로 에러가 나지 않지만, 오라클에서는 에러가 난다.
		 * 그래서 이 insertDepartment에 대한 xml을 수정해야 한다.
		 * 저 location 파라미터에 jdbc타입을 지정해줘야 한다.
		 * insert into department (department_no, department_name, location)
  			values(#{departmentNo},#{departmentName},#{location, jdbcType=VARCHAR})
		 */
//		Department dep4 = new Department(201, "명지수", null);
//		dao.insertDepartment(dep4);
//	

//		Department dept2 = new Department(100, "개발부", "부산");
//		int cnt = dao.updateDepartment(dept2);
//		System.out.println("update개수: "+cnt);
		
//		int cnt = dao.deleteDepartmentByNo(100);
//		System.out.println("delete개수 : "+cnt);
		
		Department selectDept=dao.selectDepartmentByNo(151);
		System.out.println(selectDept);
		
		System.out.println("----------------------");
		List<Department> list = dao.selectDepartmentList();
		for(Department d:list){
			System.out.println(d);
		
		}
		System.out.println("---==-=-=-=-=-=-=-=-=-==-");
		Map<Integer, Department> map = dao.selectDepartmentList_Map();
		Set<Entry<Integer,Department>> set = map.entrySet();
		for(Entry<Integer,Department>e: set){
			System.out.println(e.getKey()+"--"+e.getValue());
		}
		System.out.println("____________________________");
		List<Department> list1 = dao.selectDepartmentByLocation("판교");
		for(Department d : list1){
			System.out.println(d);
		}
		System.out.println("____________________________");
		Map<Integer, Department> map1 = dao.selectDepartmentByLocation_Map("판교");
		Set<Entry<Integer, Department>> set1 = map1.entrySet();
		for(Entry<Integer, Department>e:set1){
			System.out.println(e.getKey()+"----"+e.getValue());
		}
		System.out.println("__________부서명으로 조회__________");
		List<Department> list2 = dao.selectDepartmentByName("지수");
		for(Department d:list2){
			System.out.println(d);
		}
		
	} 
	
	
}
